import ddt
import unittest

from ltd.hanamaki.study.unittest.paramter.util.JDBCUtils import get_sql_content

from ltd.hanamaki.study.unittest.paramter.IoUtils.FileUtils import *

"""
    如果想要使用 ddt 来做参数化
    1、 需要 导入 ddt 的模块
    2、 测试数据的数据类型 是 列表
    
    如果想要 使用 ddt 来做参数化 需要使用两个 注解：
        1、 @ddt.ddt  类名前
        2、 @ddt.data(数据源名称)   测试用例上
"""
"""
    参数化的步骤：
        1、 将固定的值 改成参数列表
        2、将类运行的方式 使用 ddt.ddt 来修饰
"""
# 整理数据源 通过列表的方式来实现
dp1 = [
    # 在列表中，每一行数据都是一个测试用例所需要的数据
    # 而每一行数据的数据类型可以是  字典   也可以是  元组
    {'username': 'hanamaki', 'pwd': '111111', 'exp': 'false'},
    {'username': 'andy', 'pwd': '111111', 'exp': 'true'},
    {'username': 'jojo', 'pwd': '111111', 'exp': 'false'},

]

# 整理数据源 通过列表的方式来实现
dp2 = [
    # 在列表中，每一行数据都是一个测试用例所需要的数据
    # 而每一行数据的数据类型可以是  字典   也可以是  元组
    ('hanamaki', '111111', 'false'),
    ('andy', '111111', 'true'),
    ('jojo', '111111', 'false'),

]

dp3 = get_sql_content('examtest', 'python_test_table', 'username', 'password', 'result')

dp4 = read_text(
    'C:\\Users\\edz\\Desktop\\pythonStudy-2-15\\seleniumStudy\\ltd\\hanamaki\\study\\unittest\\paramter\\IoUtils\\data.txt')

dp5 = read_excel(
    'C:\\Users\\edz\\Desktop\\pythonStudy-2-15\\seleniumStudy\\ltd\\hanamaki\\study\\unittest\\paramter\\IoUtils\\data.xlsx')


@ddt.ddt()
class TestCase(unittest.TestCase):

    # 在一个 测试类中 如何来接收 数据源中的 数据
    @ddt.data(*dp1)
    def test_dict(self, data):
        print(data)
        print('------------------')
        print('username：', data['username'])
        print('password：', data['pwd'])
        print('result：', data['exp'])

    @ddt.data(*dp2)
    def test_tuple(self, data):
        print(data)
        print('------------------')
        print('username：', data[0])
        print('password：', data[1])
        print('result：', data[2])

    @ddt.data(*dp3)
    def test_sql(self, data):
        print(data)
        print('------------------')
        print('username：', data[0])
        print('password：', data[1])
        print('result：', data[2])

    @ddt.data(*dp4)
    def test_txt(self, data):
        print(data)
        print('------------------')
        print('username：', data[0])
        print('password：', data[1])
        print('result：', data[2])

    @ddt.data(*dp5)
    def test_excel(self, data):
        print(data)
        print('------------------')
        print('username：', data[0])
        print('password：', data[1])
        print('result：', data[2])


if __name__ == '__main__':
    unittest.main()
